package com.zenithmind.classroom.pojo.domain;

import com.baomidou.mybatisplus.annotation.TableName;
import com.zenithmind.common.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 课程课时实体类
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("classroom_course_lesson")
@Schema(description = "课程课时实体")
public class CourseLesson extends BaseEntity {

    /**
     * 课程ID
     */
    @Schema(description = "课程ID")
    private String courseId;

    /**
     * 章节ID
     */
    @Schema(description = "章节ID")
    private String chapterId;

    /**
     * 课时标题
     */
    @Schema(description = "课时标题")
    private String title;

    /**
     * 课时描述
     */
    @Schema(description = "课时描述")
    private String description;

    /**
     * 课时编号
     */
    @Schema(description = "课时编号")
    private Integer lessonNumber;

    /**
     * 课时类型（1:视频, 2:音频, 3:文档, 4:图文, 5:直播, 6:作业, 7:测验）
     */
    @Schema(description = "课时类型（1:视频, 2:音频, 3:文档, 4:图文, 5:直播, 6:作业, 7:测验）")
    private Integer type;

    /**
     * 内容URL
     */
    @Schema(description = "内容URL")
    private String contentUrl;

    /**
     * 视频时长（秒）
     */
    @Schema(description = "视频时长（秒）")
    private Integer duration;

    /**
     * 文件大小（字节）
     */
    @Schema(description = "文件大小（字节）")
    private Long fileSize;

    /**
     * 文件格式
     */
    @Schema(description = "文件格式")
    private String fileFormat;

    /**
     * 课时内容（富文本）
     */
    @Schema(description = "课时内容（富文本）")
    private String content;

    /**
     * 学习目标
     */
    @Schema(description = "学习目标")
    private String objectives;

    /**
     * 重点难点
     */
    @Schema(description = "重点难点")
    private String keyPoints;

    /**
     * 是否免费（0-否，1-是）
     */
    @Schema(description = "是否免费（0-否，1-是）")
    private Integer isFree;

    /**
     * 是否试看（0-否，1-是）
     */
    @Schema(description = "是否试看（0-否，1-是）")
    private Integer isPreview;

    /**
     * 是否发布（0-否，1-是）
     */
    @Schema(description = "是否发布（0-否，1-是）")
    private Integer isPublished;

    /**
     * 观看次数
     */
    @Schema(description = "观看次数")
    private Long viewCount;

    /**
     * 完成人数
     */
    @Schema(description = "完成人数")
    private Long completedCount;

    /**
     * 平均观看时长（秒）
     */
    @Schema(description = "平均观看时长（秒）")
    private Integer avgWatchTime;

    /**
     * 排序值
     */
    @Schema(description = "排序值")
    private Integer sortOrder;

    /**
     * 状态（0-草稿，1-已发布，2-已下架）
     */
    @Schema(description = "状态（0-草稿，1-已发布，2-已下架）")
    private Integer status;

    /**
     * 发布时间
     */
    @Schema(description = "发布时间")
    private java.time.LocalDateTime publishTime;
}
